package com.wzw.basics.reflection.generics;

import com.sun.org.apache.bcel.internal.generic.NEW;

import java.lang.reflect.Type;
import java.lang.reflect.WildcardType;

/**
 * {@link java.lang.reflect.WildcardType}
 *
 * 表示的是通配符泛型，通配符使用问号表示，例如：? extends Number和? super Integer。
 *
 * @author Wangzhiwen
 */
public class WildcardTypeApi {

    public static void main(String[] args) {

        Class<?> demoWildcardClass = DemoWildcard.class;
        Type[] genericInterfaces =  demoWildcardClass.getGenericInterfaces();
        for (Type genericInterface : genericInterfaces) {
            WildcardType wildcardType = (WildcardType) genericInterface;
            // 返回泛型变量的上边界列表。
            Type[] upperBounds = wildcardType.getUpperBounds();

            // 返回泛型变量的下边界列表
            Type[] lowerBounds = wildcardType.getLowerBounds();
        }
    }

}

class DemoWildcard<T extends Object> {

}
